using System;
using System.Collections.Generic;
using System.Text;
using Mpi.Common.Collections;
using System.ComponentModel;
using Xeml.Document.Contracts;

namespace Xeml.Document
{
    //public class Material : XemlAnnotatableObject, ISupervisableTerm, INotifyPropertyChanged
    //{
    //    private string _nameSpaceAlias;
    //    private string _term;
    //    private string _termId;

    //    #region Properties

    //    public string Term
    //    {
    //        get { return _term; }
    //        set
    //        {
    //            if (_term != value)
    //            {
    //                _term = value;
    //                OnPropertyChanged("Term");
    //            }
    //        }
    //    }

    //    public string NameSpaceAlias
    //    {
    //        get { return _nameSpaceAlias; }
    //        set
    //        {
    //            if (_nameSpaceAlias != value)
    //            {
    //                _nameSpaceAlias = value;
    //                OnPropertyChanged("NameSpaceAlias");
    //            }
    //        }
    //    }

    //    /// <summary>
    //    /// The full qualified name. Is a combination of the name space followed by the name and separated by a colon.
    //    /// </summary>
    //    /// <exception cref="System.FormatException">Will be throwed if the passed value has a wrong format. Correct formats are like 'MyNameSpace:MyParameter'.</exception>
    //    public string FqName
    //    {
    //        get
    //        {
    //            return BuildFqName(this._nameSpaceAlias, this._term);
    //        }
    //        set
    //        {
    //            string[] temp = value.Split(':');
    //            if (temp.Length != 2)
    //            {
    //                throw new FormatException("The value has the wrong format.");
    //            }
    //            else
    //            {
    //                string oldVal = this.FqName;
    //                this._nameSpaceAlias = temp[0];
    //                this._term = temp[1];
    //                //if (oldVal != this.FqName)
    //                //{
    //                //    OnChanged();
    //                //}
    //            }
    //        }
    //    } 
    //    #endregion

    //    #region ctors
    //    public Material(string termId)
    //    {
    //        _termId = termId;
    //    }

    //    public Material(Material m)
    //        : base(m)
    //    {
    //        this.NameSpaceAlias = m.NameSpaceAlias;
    //        this.Term = m.Term;
    //        _termId = m.TermId;
    //    } 
    //    #endregion

    //    #region Methods
    //    private string BuildFqName(string nameSpace, string name)
    //    {
    //        if (String.IsNullOrEmpty(nameSpace) || "none".Equals(nameSpace.ToLower()))
    //        {
    //            return name;
    //        }
    //        else
    //        {
    //            return String.Format("{0}:{1}", nameSpace, name);
    //        }
    //    } 
    //    #endregion



    //    private MaterialCollection _collection;
    //    public MaterialCollection Collection
    //    {
    //        get
    //        {
    //            return this._collection;
    //        }
    //        set
    //        {
    //            if (_collection != value)
    //            {
    //                this._collection = value;
    //                OnPropertyChanged("Collection");
    //            }
    //        }
    //    }

       
    //    #region ISupervisableTerm Members

    //    public string TermId
    //    {
    //        get { return _termId; }
    //    }

    //    #endregion

    //    #region INotifyPropertyChanged Members

    //    protected virtual void OnPropertyChanged(string propName)
    //    {
    //        if (PropertyChanged != null)
    //        {
    //            PropertyChanged(this, new PropertyChangedEventArgs(propName));
    //        }
    //    }
    //    public event PropertyChangedEventHandler PropertyChanged;

    //    #endregion
    //}
}
